package com.matrix.cart.service;

import com.matrix.api.cart.dto.CartItemDTO;
import com.matrix.api.cart.vo.CartResultVO;

/**
 * @author 有点甜
 * @since 2025/8/8
 */
public interface CartService {

    /**
     * 添加到购物车
     *
     * @param userId 用户id
     * @param item   菜品
     */
    void addItem(Long userId, CartItemDTO item);

    /**
     * 更新购物车菜品
     *
     * @param userId 用户id
     * @param item   菜品
     */
    void updateItemQuantity(Long userId, CartItemDTO item);

    /**
     * 删除购物车菜品
     *
     * @param userId  用户id
     * @param itemKey 菜品
     */
    void removeItem(Long userId, CartItemDTO itemKey);

    /**
     * 清空购物车
     *
     * @param userId 用户id
     * @param shopId 商铺id
     */
    void clearCart(Long userId, Long shopId);

    /**
     * 获取购物车
     *
     * @param userId 用户id
     * @param shopId 商铺id
     * @return 购物车列表
     */
    CartResultVO getCart(Long userId, Long shopId);
}
